From 4a1be601d79b2522d956090c2d4e673aac4841a8 Mon Sep 17 00:00:00 2001 From: robertl Date: Sat, 25 Jan 2003 20:07:55 +0000 Subject: [PATCH] Add case insensitive searches on both GPX reads and magproto icon lookups. --- gpsbabel/gpx.c | 2 +- gpsbabel/magproto.c | 4 ++-- gpsbabel/util.c | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gpsbabel/gpx.c b/gpsbabel/gpx.c index e9150c389..52d98027e 100644 --- a/gpsbabel/gpx.c +++ b/gpsbabel/gpx.c @@ -349,7 +349,7 @@ gs_mktype(char *t) int sz = sizeof(gs_type_map) / sizeof(gs_type_map[0]); for (i = 0; i < sz; i++) { - if (0 == strcmp(t, gs_type_map[i].name)) { + if (0 == case_ignore_strcmp(t, gs_type_map[i].name)) { return gs_type_map[i].type; } } diff --git a/gpsbabel/magproto.c b/gpsbabel/magproto.c index 3ca11c8d2..86611fbff 100644 --- a/gpsbabel/magproto.c +++ b/gpsbabel/magproto.c @@ -916,7 +916,7 @@ mag_find_descr_from_token(const char *token) } for (i = icon_mapping; i->token; i++) { - if (strcmp(token, i->token) == 0) + if (case_ignore_strcmp(token, i->token) == 0) return i->icon; } return icon_mapping[0].icon; @@ -932,7 +932,7 @@ mag_find_token_from_descr(const char *icon) } for (i = icon_mapping; i->token; i++) { - if (strcmp(icon, i->icon) == 0) + if (case_ignore_strcmp(icon, i->icon) == 0) return i->token; } return icon_mapping[0].token; diff --git a/gpsbabel/util.c b/gpsbabel/util.c index 2ea444037..0f8b30d05 100644 --- a/gpsbabel/util.c +++ b/gpsbabel/util.c @@ -107,6 +107,20 @@ rtrim(char *s) } } +/* + * Like strcmp, but case insensitive. Like Berkeley's strcasecmp. + */ + +int +case_ignore_strcmp(const char *s1, const char *s2) +{ + for(;toupper(*s1) == toupper(*s2); ++ s1, ++s2) { + if (*s1 == 0) + return 0; + } + return (toupper(*s1) < toupper(*s2)) ? -1 : +1; + +} coord mkposn(const char *string) -- 2.30.2